#include "bits/stdc++.h"
using namespace std;
int main()
{
    long i, j, result = 0;
    long n;
    long a, b, c; // 表示最大值
    // 定义4个数表示营养的价值
    long tf = 0, zf = 0, db = 0;
    cin >> n >> a >> b >> c;
    // n表示行数
    long YY[n][4];
    // 输出值
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < 4; j++)
        {
            cin >> YY[i][j];
        }
    }
    long S[n];
    long index[n];
    for (long i = 0; i < n; i++)
    {
        index[i] = i;
    }

    for (long i = 0; i < n; i++)
    {
        S[i] = YY[i][3];
    }
    // cout<<"s：";
    // for(long i=0;i<N;i++){
    // 	cout<<S[i]<<" ";
    // }
    for (long i = 0; i < n - 1; i++)
    {
        for (long j = 0; j < n - i - 1; j++)
        {
            if (S[index[j]] < S[index[j + 1]])
            {
                long temp = index[j];
                index[j] = index[j + 1];
                index[j + 1] = temp;
            }
        }
    }
    cout << "\ns[index]";
    for (long i = 0; i < n; i++)
    {
        cout << S[index[i]] << " ";
    }
    cout << "\nindex[i]";
    for (long i = 0; i < 4; i++)
    {
        cout << index[i] << " ";
    }
    // 判断
    //  for(i=0;i<n;i++){
    //  	if((YY[i][0]<=a)&&(YY[i][1]<=b)&&(YY[i][2]<=c)){
    //  		if(max<YY[i][3]) max=YY[i][3];
    //  	}
    //  }
    for (i = 0; i < n; i++)
    {
        tf += YY[index[i]][0];
        zf += YY[index[i]][1];
        db += YY[index[i]][2];
        if (tf <= a && zf <= b && db <= c)
        {
            result += YY[index[i]][3];
            continue;
        }
        else
        {
            tf -= YY[index[i]][0];
            zf -= YY[index[i]][1];
            db -= YY[index[i]][2];
        }
    }
    // cout<<"\n";
    cout << result;
}